home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / news / pentium.bug < prev    next >
Text File  |  1994-11-24  |  3KB  |  90 lines

  1. Subject: Pentium Floating Point Bug     Date: 15 Nov 1994
  2. Summary: Divisions might give incorrect results on Pentium
  3.  
  4.               Pentium Floating Point Division Bug
  5.  
  6. There has been a flurry of activity the last fews days on the
  7. Internet news group, comp.sys.intel, that should interest MATLAB
  8. users.  A serious design flaw has been discovered in the floating
  9. point unit on Intel's Pentium chip.  Double precision divisions
  10. involving operands with certain bit patterns can produce incorrect
  11. results.
  12.  
  13. The most dramatic example seen so far can be extracted from a
  14. posting last night by Tim Coe of Vitesse Semiconductor.  In MATLAB,
  15. his example becomes
  16.  
  17.     x = 4195835
  18.     y = 3145727
  19.     z = x - (x/y)*y
  20.  
  21. With exact computation, z would be zero.  In fact, we get zero on
  22. most machines, including those using Intel 286, 386 and 486 chips.
  23. Even with roundoff error, z should not be much larger than eps*x,
  24. which is about 9.3e-10.  But, on the Pentium,
  25.  
  26.     z = 256
  27.  
  28. The relative error, z/x, is about 2^(-14) or 6.1e-5.  The computed
  29. quotient, x/y, is accurate to only 14 bits.
  30.  
  31. An article in last week's edition of Electronic Engineering Times
  32. credits Prof. Thomas Nicely, a mathematics professor at Lynchburg
  33. College in Virginia, with the first public announcement of the
  34. Pentium division bug.  One of Nicely's examples involves
  35.  
  36.     p = 824633702441
  37.  
  38. With exact computation
  39.  
  40.     q = 1 - (1/p)*p
  41.  
  42. would be zero.  With floating point computation, q should be on
  43. the order of eps.  On most machines, we find that
  44.  
  45.     q = eps/2 = 2^(-53) ~= 1.11e-16
  46.  
  47. But on the Pentium
  48.  
  49.     q = 2^(-28) ~= 3.72e-09
  50.  
  51. This is roughly single precision accuracy and is typical of the
  52. most of the examples that had been posted before Coe's analysis.
  53.  
  54. The bit patterns of the operands involved in these examples
  55. are very special.  The denominator in Coe's example is
  56.  
  57.     y = 3*2^20 - 1
  58.  
  59. Nicely's research involves a theorem about sums of reciprocals
  60. of prime numbers.  His example involves a prime of the form
  61.  
  62.     p = 3*2^38 - 18391
  63.  
  64. We're not sure yet how many operands cause the Pentium's floating
  65. point division to fail, or even what operands produce the largest
  66. relative error.  It is certainly true that failures are very rare.
  67. But, as far as we are concerned, the real difficulty is having to
  68. worry about this at all.  There are so many other things than can
  69. go wrong with computer hardware, and software, that, at least, we
  70. ought to be able to rely on the basic arithmetic.
  71.  
  72. The bug is definitely in the Pentium chip.  It occurs at all clock
  73. rates.  The bug does not affect other arithmetic operations, or the
  74. built-in transcendental functions.  Intel has recently made changes
  75. to the on-chip Program Logic Array that fix the bug and is now
  76. believed to be producing error free CPUs.  It remains to be seen
  77. how long it will take for these to reach users.
  78.  
  79. An unnamed Intel spokesman is quoted in the EE Times article as
  80. saying "If customers are concerned, they can call and we'll replace
  81. any of the parts that contain the bug."  But, at the MathWorks,
  82. we have our own friends and contacts at Intel and we're unable
  83. to confirm this policy.  We'll let you know when we hear anything
  84. more definite.  In the meantime, the phone number for Customer
  85. Service at Intel is 800-628-8686.
  86.  
  87.    -- Cleve Moler     moler@mathworks.com
  88.    Chairman and Chief Scientist, The MathWorks, Inc.
  89.  
  90.